package com.module.app.network.interceptor;//package com.module.base.network.interceptor;
//
//import android.net.Uri;
//import android.text.TextUtils;
//
//import java.io.IOException;
//import java.util.HashMap;
//import java.util.Map;
//
//import okhttp3.FormBody;
//import okhttp3.HttpUrl;
//import okhttp3.Interceptor;
//import okhttp3.Request;
//import okhttp3.RequestBody;
//import okhttp3.Response;
//
///**
// * 参数拦截器
// * 对post get请求之前，添加基础参数
// */
//public class NewParameterInterceptor implements Interceptor, IConfig {
//
//    public interface IParamback {
//        public void init();
//
//        public void add(String key, Object value);
//
//        public void addToBody(FormBody.Builder body);
//
//        public void addToBody(HttpUrl.Builder body);
//
//        public void clear();
//    }
//
//    private HashMap<String, String> params;
//
//    public NewParameterInterceptor(HashMap<String, String> params) {
//        this.params = params;
//    }
//
//    public class IParambackImp implements IParamback {
//        private HashMap<String, Object> finalData;
//
//        @Override
//        public void init() {
//            finalData = new HashMap<>();
//        }
//
//        @Override
//        public void add(String key, Object value) {
//            if (finalData != null) {
//                finalData.put(key, value);
//            }
//        }
//
//        @Override
//        public void addToBody(FormBody.Builder body) {
//            if (body != null) {
//                String time = System.currentTimeMillis() / 1000 + "";
//                finalData.put(TIMESTAMP, time);
//                body.addEncoded(TIMESTAMP, time);
//                String sign = HttpUtils.Md5.getSign(finalData);
//                finalData.put(SIGN, sign);
//                body.addEncoded(SIGN, sign);
//                clear();
//            }
//        }
//
//        @Override
//        public void addToBody(HttpUrl.Builder body) {
//            if (body != null) {
//                String time = System.currentTimeMillis() / 1000 + "";
//                finalData.put(TIMESTAMP, time);
//                body.addEncodedQueryParameter(TIMESTAMP, time);
//
//                String sign = HttpUtils.Md5.getSign(finalData);
//                finalData.put(SIGN, sign);
//                body.addEncodedQueryParameter(SIGN, sign);
//
//                clear();
//            }
//        }
//
//        @Override
//        public void clear() {
//            if (finalData != null) {
//                LogSDK.d("" + finalData.toString());
//                finalData.clear();
//            }
//        }
//    }
//
//
//    @Override
//    public Response intercept(Chain chain) throws IOException {
//        Request request = chain.request();
//        //判断是否需要基础参数，如果不需要，直接return
//        String needBaseParams = request.header(API_NO_BASE_PARAM);
//        if (!TextUtils.isEmpty(needBaseParams)) {
//            return chain.proceed(request);
//        }
//
//        if (params != null && params.size() != 0) {
//            if (request.method().equals("GET") || request.method().equals("PUT") || request.method().equals("DELETE")) {// 为GET方式统一添加请求参数
//                HttpUrl.Builder modifiedUrl = request.url().newBuilder()
//                        .scheme(request.url().scheme())
//                        .host(request.url().host());
//
//                IParambackImp iParamback = new IParambackImp();
//                iParamback.init();
//
//                Uri uri = Uri.parse(request.url().toString());
//                for (String paramName : uri.getQueryParameterNames()) {
//                    String paramValue = uri.getQueryParameter(paramName);
//                    if (!TextUtils.isEmpty(paramValue) && iParamback != null) {
//                        iParamback.add(paramName, paramValue);
//                    }
//                }
//                uri = null;
//                if (params.size() != 0) {
//                    for (Map.Entry<String, String> entry : params.entrySet()) {
//                        if(!TextUtils.isEmpty(entry.getKey()) && !TextUtils.isEmpty(entry.getValue())) {
//                            modifiedUrl.addQueryParameter(entry.getKey(), entry.getValue().toString());
//                            if (iParamback != null) {
//                                iParamback.add(entry.getKey(), entry.getValue());
//                            }
//                        }
//                    }
//                }
//
//                if (iParamback != null) {
//                    iParamback.addToBody(modifiedUrl);
//                    iParamback = null;
//                }
//
//                request = request.newBuilder()
//                        .addHeader("Connection", "close")
//                        .method(request.method(), request.body())
//                        .url(modifiedUrl.build())
//                        .build();
//
//            } else if (request.method().equals("POST")) {// 为POST方式统一添加请求参数
//                RequestBody requestBody = request.body();
//                FormBody.Builder formBody = new FormBody.Builder();
//                if (requestBody instanceof FormBody) {
//
//                    IParambackImp iParamback = new IParambackImp();
//                    iParamback.init();
//                    if (params.size() != 0) {
//                        for (Map.Entry<String, String> entry : params.entrySet()) {
//                            if(!TextUtils.isEmpty(entry.getKey()) && !TextUtils.isEmpty(entry.getValue())) {
//                                formBody.addEncoded(entry.getKey(), entry.getValue().toString());
//                                if (iParamback != null) {
//                                    iParamback.add(entry.getKey(), entry.getValue());
//                                }
//                            }
//
//                        }
//                    }
//                    formBody.build();
//                    if (request.body() instanceof FormBody) {
//                        FormBody oldBody = (FormBody) request.body();
//                        if (oldBody != null && oldBody.size() != 0) {
//                            for (int i = 0; i < oldBody.size(); i++) {
//                                formBody.addEncoded(oldBody.encodedName(i), oldBody.encodedValue(i));
//                                if (iParamback != null) {
//                                    iParamback.add(oldBody.encodedName(i), oldBody.value(i));
//                                }
//                            }
//                        }
//                    } else if (request.body() instanceof RequestBody) {
//
//                    }
//                    if (iParamback != null) {
//                        iParamback.addToBody(formBody);
//                        iParamback = null;
//                    }
//                    request = request.newBuilder()
//                            .addHeader("Connection", "close")
//                            .post(formBody.build())
//                            .build();
//                } else {
//                    request = request.newBuilder()
//                            .addHeader("Connection", "close")
//                            .post(requestBody)
//                            .build();
//                }
//
//
//            }
//        }
//
//        Response response = chain.proceed(request);
//
//        openByAPI(response.header(AppConfigSDK.PRESET_KEY.APPCONFIG_VERSION));
//        return response;
//    }
//
//    /**
//     * 每次读取版本号，入队列
//     *
//     * @param newVersion
//     */
//    private void openByAPI(String newVersion) {
//        if (TextUtils.isEmpty(newVersion))
//            return;
//        try {
//            AppConfigSDK.getInstance().updateByAPI(newVersion);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//}
